home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Bavarian
/
Bavarian #088 (19xx)(APS Electronic).zip
/
Bavarian #088 (19xx)(APS Electronic).adf
/
max
(
.txt
)
< prev
next >
Wrap
AmigaBASIC Source Code
|
1986-12-20
|
26KB
|
502 lines
werte: DEF FNfu1(x)=SIN(x) : fu1$ = "y1 = sin(x)"
DEF FNfu2(x)=x : fu2$ = "y2 = x"
DEF FNfu3(x)=x^2 : fu3$ = "y3 = x²"
SCREEN 1,320,200,5,1 : WINDOW 2,,(0,0)-(631,186),16
PALETTE 0,0.24,0.36,1 : PALETTE 3,0,0,0 : a=-10 : b=10
tafel: WINDOW OUTPUT 2 : CLS : WIDTH "scrn:",80 : LOCATE 2,2
PRINT "««« MATHE-MAX V0.7 »»» by EAGLE 6/87"
LOCATE 5,1 :REM ...
PRINT " < > .......................primzahlen < > ........funktionen.ZEICHNEN" : PRINT
PRINT " < > .........quadratische.gleichungen < > ...........funktionsTABELLE" : PRINT
PRINT " < > .....lineare.funktionsgleichungen < > ....SCHNITTSTELLEN y1-y2-y3" : PRINT
PRINT " < > quadratische.funktionsgleichungen < > ......NULLSTELLENberechnung" : PRINT
LOCATE 13,45 : PRINT "< > .....STEIGUNGs-berechnungen" : PRINT
LOCATE 15,45 : PRINT "< > .......MIN-MAX.berechnungen" : PRINT
LOCATE 17,45 : PRINT "< > ......FLAECHEN-berechnungen" : PRINT
LOCATE 19,45 : PRINT "< > ...DIFFERENTIATIONS-FORMELN"
LOCATE 15,3 : PRINT "> ";fu1$
LOCATE 17,3 : PRINT "> ";fu2$
LOCATE 19,3 : PRINT "> ";fu3$;
LOCATE 23,45 : PRINT "< > .......................ENDE";
verzweigung: GOSUB checkmouse
IF x<22 OR x>36 THEN verzw2
IF y>32 AND y<38 THEN primzahlen
IF y>48 AND y<54 THEN quadrgl
IF y>64 AND y<70 THEN lingleich
IF y>80 AND y<86 THEN qufugl
verzw2: IF x<358 OR x>372 THEN verzweigung
IF y>32 AND y<38 THEN eingabe
IF y>48 AND y<54 THEN wertetab
IF y>64 AND y<70 THEN schnittpu
IF y>80 AND y<86 THEN nullstellen
IF y>96 AND y<102 THEN steigung
IF y>112 AND y<118 THEN minmax
IF y>128 AND y<134 THEN flaechen
IF y>144 AND y<150 THEN grundform
IF y>176 AND y<182 THEN SYSTEM
GOTO verzweigung
checkmouse: IF MOUSE(0) >0 THEN z=1 :ELSE checkmouse
x = MOUSE(1) : y = MOUSE(2) : RETURN
primzahlen:
WINDOW 3 ,"primzahlen" ,(50,45)-(575,150),0 : WIDTH "scrn:",65
priman: CLS : LOCATE 4,12
PRINT "solle eine zahl ueberprueft werden < o >"
PRINT : PRINT " oder ein bestimmter bereich < o >"
PRINT : PRINT " oder zurueck zum menue < o >"
primchm: GOSUB checkmouse
IF x>375 AND x<412 AND y>24 AND y<30 THEN primei
IF x>375 AND x<412 AND y>56 AND y<62 THEN WINDOW CLOSE 3 : GOTO verzweigung
IF x>375 AND x<412 AND y>40 AND y<46 THEN primbe :ELSE primchm
primbe: CLS : PRINT : INPUT " bereich von ";a&: LOCATE 2,35 : INPUT "bis ";b& : PRINT
IF a&/2 = INT (a&/2) THEN a& = a&+1
a&=a&-2 : IF a&<0 THEN a&=1
primho: a& = a& + 2 : IF MOUSE (0) > 0 THEN primab2
FOR j% = 3 TO SQR (a&) STEP 2
IF a&/j% = INT (a&/j%) THEN GOTO primho
NEXT j% : IF a&>b& THEN primab1 :ELSE PRINT a&;
GOTO primho
primei: CLS : PRINT : INPUT " welche zahl soll ueberprueft werden ";a&
IF a&<0 THEN primab1
PRINT : PRINT " die zahl ist durch folgende zahlen teilbar : ";
c%=3 : d%=2 : IF a&/2 = INT(a&/2) THEN c%=2 : d%=1
FOR i = c% TO SQR (a&) STEP d%
b&=a&/i : IF a&/i = b& THEN PRINT i;: IF b&<>i THEN PRINT a&/i;
IF MOUSE(0) > 0 THEN primab2
NEXT i
primab1: PRINT: PRINT : LOCATE 13 , 2 : PRINT "<< o >>";
warte: GOSUB checkmouse : GOTO priman
primab2: PRINT :PRINT :LOCATE 13,53 :PRINT "<< abbruch >>";: GOTO warte
quadrgl:
WINDOW 3 ,"quadratische gleichungen" ,(50,45)-(575,150),0 : REM WIDTH "scrn:",65
quadan: CLS : LOCATE 4,12
PRINT "es gilt die form : x² + p*x + q = 0"
PRINT : PRINT " eingabe von p und q < o >"
PRINT : PRINT " oder zurueck zum menue < o >"
quadchm: GOSUB checkmouse
IF x>375 AND x<412 AND y>56 AND y<62 THEN WINDOW CLOSE 3 : GOTO verzweigung
IF x>375 AND x<412 AND y>40 AND y<46 THEN quadre :ELSE quadchm
quadre: LOCATE 10,2 : INPUT "p = ";p# : LOCATE 11,2 : INPUT "q = ";q#
IF p#*p#/4 < q# THEN LOCATE 13,12 : PRINT "hat keine reelle loesung";: GOTO quaden
x1# = -(p#/2)+SQR(-q#+(p#/2)^2) : x2# = -(p#/2)-SQR(-q#+(p#/2)^2)
LOCATE 10,48 : PRINT "x1 = ";: PRINT USING "#####.#####";x1#
LOCATE 12,48 : PRINT "x2 = ";: PRINT USING "#####.#####";x2#
quaden: LOCATE 13 , 2 : PRINT "<< o >>";
quadwa: GOSUB checkmouse : GOTO quadan
lingleich:
WINDOW 3 ,"lineare funktionsgleichungen" ,(50,45)-(575,150),0
linan: CLS : LOCATE 2,10
PRINT "lineare funktionsgleichung mit 2 punktangaben"
PRINT : PRINT " eingabe der steigung in einem punkt < o >"
PRINT : PRINT " eingabe der zwei punte < o >"
PRINT : PRINT " oder zurueck zum menue < o >"
linchm: GOSUB checkmouse
IF x>375 AND x<412 AND y>56 AND y<62 THEN WINDOW CLOSE 3 : GOTO verzweigung
IF x>375 AND x<412 AND y>24 AND y<30 THEN linst
IF x>375 AND x<412 AND y>40 AND y<46 THEN linbe :ELSE linchm
linbe: LOCATE 10,2 : INPUT " p1 = ( x,y ) ";x1#,y1# : LOCATE 11,2
INPUT " p2 = ( x,y ) ";x2#,y2# : IF x1# = x2# THEN linwa
linre: p1# = ( y2# - y1# ) / ( x2# - x1# ) : p2# = y1# - p1# * x1#
LOCATE 13,20 : PRINT "y =";: PRINT USING "#####.#####";p1#;
PRINT " * x ";: IF p2# >=0 THEN PRINT "+";
PRINT USING "#####.#####";p2#;
linwa: LOCATE 13,2 : PRINT " << o >>";
linmc: IF MOUSE(0) > 0 THEN linan :ELSE linmc
linst: LOCATE 10,3 : INPUT "p1 = ( x,y ) ";x1#,y1#
INPUT " steigung : ";m# : x2# = x1# + 1 : y2# = y1# + m# : GOTO linre
qufugl:
WINDOW 3 ,"quadratische funktions-gleichungen" ,(50,45)-(575,150),0
qufuan: CLS : LOCATE 2,1
PRINT " eingabe von : 3 funktions-punkten < o >"
PRINT " 2 funktions-punkten { normalparabel } < o >"
PRINT " 1 funktions-punkt + scheitelpunkt < o >"
PRINT : PRINT " oder zurueck zum menue < o >"
qufuchm: GOSUB checkmouse
IF x>470 AND x<500 AND y>40 AND y<46 THEN WINDOW CLOSE 3 : GOTO verzweigung
IF x>470 AND x<500 AND y>8 AND y<14 THEN qufu3
IF x>470 AND x<500 AND y>16 AND y<22 THEN qufu2
IF x>470 AND x<500 AND y>24 AND y<30 THEN qufu1 :ELSE qufuchm
qufu3: LOCATE 8,1 : INPUT " p1 ( x1,y1 ) ";x1#,y1#
INPUT " p2 ( x2,y2 ) ";x2#,y2# : INPUT " p3 ( x3,y3 ) ";x3#,y3#
qufuber: z# = y1# *( x2#^2-x3#^2 ) + y2# *( x3#^2 - x1#^2 ) + y3# *( x1#^2 -x2#^2 )
w# = x1# *( x2#^2-x3#^2 ) + x2# *( x3#^2 - x1#^2 ) + x3# *( x1#^2 -x2#^2 )
IF w# = 0 THEN qufuwa
a1# = z#/w#
a2# = ( y2# - a1# *( x2#-x3# ) - y3# ) / ( x2#^2 - x3#^2 )
a0# = y3# - a2# * x3#^2 - a1# * x3#
qufuda: LOCATE 13,3 : PRINT "y = ";: PRINT USING "#####.#####";a2#;
PRINT " * x² ";: IF a1#>=0 THEN PRINT " +";
PRINT USING "#####.#####";a1#;: PRINT " * x ";: IF a0#>=0 THEN PRINT " +";
PRINT USING "#####.#####";a0#;
qufuwa: LOCATE 11,57 : PRINT "<< o >>";
qufucm: GOSUB checkmouse : GOTO qufuan
qufu1: LOCATE 9,1 : INPUT " scheitelpunkt ( xs,ys ) ";x2#,y2#
INPUT " p2 ( x2,y2 ) ";x1#,y1# : x3# = 2 * x2# - x1# : y3# = y1#:GOTO qufuber
qufu2: LOCATE 8,17 : PRINT "oeffnung nach <o> ben oder <u> nten"
qufuhm: GOSUB checkmouse
IF x>262 AND x<276 AND y>56 AND y<62 THEN a2# = 1 : GOTO qufuw2
IF x>397 AND x<411 AND y>56 AND y<62 THEN a2# = -1 :ELSE qufuhm
qufuw2: LOCATE 10,1 : INPUT " p1 ( x1,y1 ) ";x1#,y1# : INPUT " p2 ( x2,y2 ) ";x2#,y2#
IF x2# - x1# = 0 THEN qufuwa
a1# = ( y2# - a2# * x2#^2 - y1# + a2# * x1#^2 ) / ( x2# - x1# )
a0# = y1# - a2# * x1#^2 - a1# * x1# : GOTO qufuda
eingabe: WINDOW 3,"bereichs-eingabe",(120,50)-(500,131),0 : WIDTH"scrn:",45
PRINT : PRINT " zeichnen von funktion 1 < >"
PRINT : PRINT " zeichnen von funktion 1+2 < >"
PRINT : PRINT " zeichnen von funktion 1+2+3 < >" : nur=0
einch: GOSUB checkmouse : IF x<302 OR x>316 THEN eich
IF y>8 AND y<14 THEN nur=1
IF y>24 AND y<30 THEN nur=2
IF y>40 AND y<46 THEN nur=3
IF nur <1 THEN einch
beran: CLS : PRINT : INPUT " x - bereich von : ";a
INPUT " bis : ";b : PRINT
INPUT " y - bereich von : ";d : INPUT " bis : ";e
PRINT : INPUT " scalierung von x : ";t
INPUT " scalierung von y : ";u
IF a>b THEN SWAP a,b
IF d>e THEN SWAP d,e
IF t=0 OR u=0 THEN beran
IF a=b OR d=e THEN beran
IF a <= 0 AND b > 0 THEN c = (ABS(a)+b)/630
IF b <= 0 THEN c = (ABS(a)-ABS(b))/630
IF a > 0 THEN c = (b-a)/630
IF a > 0 THEN k = b-a
IF b <= 0 THEN k = ABS(a)-ABS(b)
IF d > 0 THEN l = e-d
IF e <= 0 THEN l = ABS(d)-ABS(e)
IF a <= 0 AND b > 0 THEN k = -a+b
IF d <= 0 AND e > 0 THEN l = -d+e
IF t >= k OR u >= l THEN beran
f = INT (ABS(a)*632/k) : g = INT (ABS(d)*194/l)
WINDOW CLOSE 3
kordikr: WINDOW OUTPUT 2 : CLS
IF a=0 AND d=0 THEN LINE (0,0)-(0,194),3 : LINE (0,194)-(630,194),3 : GOTO scala
IF b=0 AND d=0 THEN LINE (630,0)-(630,194),3 : LINE (0,194)-(630,194),3 : GOTO scala
IF b=0 AND e=0 THEN LINE (0,0)-(630,0),3 : LINE (630,0)-(630,194),3 : GOTO scala
IF a=0 AND e=0 THEN LINE (0,0)-(0,194),3 : LINE (0,0)-(630,0),3 : GOTO scala
IF b<=0 AND d>=0 THEN LINE (0,194)-(605,194),3 : LINE (630,0)-(630,184),3 : GOTO scala
IF a>0 AND d>0 THEN LINE (0,0)-(0,184),3 : LINE (25,194)-(630,194),3 : GOTO scala
IF b<=0 AND e<=0 THEN LINE (0,0)-(605,0),3 : LINE (630,10)-(630,194),3 : GOTO scala
IF a>0 AND e<=0 THEN LINE (25,0)-(630,0),3 : LINE (0,10)-(0,194),3 : GOTO scala
IF a<=0 AND b>0 AND d<0 AND e>0 THEN LINE (0,194-g)-(630,194-g),3 : LINE (f,0)-(f,194),3 : GOTO scala
IF a<=0 AND b>0 AND d>=0 THEN LINE (0,194)-(630,194),3 : LINE (f,0)-(f,184),3 : GOTO scala
IF a<=0 AND b>0 AND e<=0 THEN LINE (0,0)-(630,0),3 : LINE (f,10)-(f,194),3 : GOTO scala
IF a>=0 AND d<=0 AND e>0 THEN LINE (0,0)-(0,194),3 : LINE (25,194-g)-(630,194-g),3 : GOTO scala
IF b<=0 AND d<0 AND e>0 THEN LINE (630,0)-(630,194),3 : LINE (0,194-g)-(605,194-g),3
scala: v = 630/k : w = 194/l
IF ABS(a/t) = INT(ABS(a/t)) THEN panfx=0 : GOTO scaly
xanf = INT(ABS(a)/t)*t
IF a>0 THEN xanf = xanf+t
panfx = (ABS(ABS(a)-xanf))*v
scaly: IF ABS(e/u) = INT(ABS(e/u)) THEN panfy=0 : GOTO puber
yanf = INT(ABS(e)/u)*u
panfy = (ABS(ABS(e)-yanf))*w
puber: IF f<5 THEN f=5
IF f>625 THEN f=625
IF g<3 THEN g=3
IF g>191 THEN g=191
IF a>=0 THEN p6=0 : p7=10
IF b<=0 THEN p6=620 : p7=630
IF a<0 AND b>0 THEN p6=f-5 : p7=f+5
IF d>=0 THEN p4=188 : p5=194
IF e<=0 THEN p4=0 : p5=6
IF d<0 AND e>0 THEN p4=191-g : p5=197-g
scazei: FOR i = panfx TO 630 STEP (v*t) : LINE (i,p4)-(i,p5),3 : NEXT i
FOR i = panfy TO 194 STEP (w*u) : LINE (p6,i)-(p7,i),3 : NEXT i
zuordnung: IF a = 0 THEN a = 0.0001
IF b = 0 THEN b = -0.0001
IF d = 0 THEN d = 0.0001
IF e = 0 THEN e = -0.0001
sektor: FOR i = 1 TO nur : arno = 0
FOR x = a TO b STEP c
IF i = 1 THEN y=FNfu1(x)
IF i = 2 THEN y=FNfu2(x)
IF i = 3 THEN y=FNfu3(x)
IF b<0 THEN p1=632/k*(x+ABS(a))
IF a>0 THEN p1=632/k*(x-a)
IF d>0 THEN p2=194-194/l*(y-d)
IF e<0 THEN p2=-194/l*(y+ABS(e))
IF a<0 AND b>0 THEN p1=632/k*x+f
IF d<0 AND e>0 THEN p2=194-194/l*y-g
IF p1<0 OR p1>632 OR p2<0 OR p2>194 THEN arno=0 : GOTO sektor1
IF arno=0 THEN arno=1 : PSET (p1,p2),i
LINE -(p1,p2),i
sektor1: NEXT x : NEXT i
fertig: IF a = 0.0001 THEN a=0
IF b = -0.0001 THEN b=0
IF d = 0.0001 THEN d=0
IF e = -0.0001 THEN e=0
WINDOW 3,"funktions-menue",(120,50)-(500,131),2
PRINT : PRINT " - funktionen ZEIGEN & ABLESEN"
PRINT : PRINT " von funktionswerten < >"
PRINT : PRINT " - DARSTELLUNGSBEREICH aendern < >"
PRINT : PRINT " - zurueck zum MENUE < >"
schleife: GOSUB checkmouse : wa=0
IF x<286 OR x>300 THEN schleife
IF y>24 AND y<30 THEN wa=1
IF y>40 AND y<46 THEN wa=2
IF y>56 AND y<62 THEN wa=3
IF wa<1 THEN schleife
WINDOW CLOSE 3 : IF wa=3 THEN tafel
IF wa=2 THEN eingabe
WINDOW 3,"darstellungsbereich :",(10,140)-(600,180),18
WIDTH "scrn:",75 : PRINT " > ";fu1$ : LOCATE 1,40
PRINT " > ";fu2$ : PRINT " > ";fu3$
PRINT " x : von ";a : LOCATE 3,27 : PRINT "bis ";b
PRINT " y : von ";d : LOCATE 4,27 : PRINT "bis ";e
PRINT " scalierung x,y : ";t;" ";u; : LOCATE 5,54
PRINT "<< hier anklicken >>";
wertescala: IF MOUSE(0) = 0 THEN wertescala
r = MOUSE(3) : s = MOUSE(4)
x1=a+(k/632)*r : y1=d+(l/194)*(194-s)
v = WINDOW(0) : IF v = 3 AND r>430 AND s>15 THEN WINDOW CLOSE 3 : GOTO fertig
IF v <> 2 THEN wertescala
LOCATE 3,55 : PRINT "x = "; : PRINT USING " #####.#####";x1
LOCATE 4,55 : PRINT "y = "; : PRINT USING " #####.#####";y1
GOTO wertescala
wertetab:
WINDOW 3 ,"werte-tabellen" ,(115,45)-(515,126),0 : WIDTH "scrn:",65
PRINT : INPUT " von : ";anf : LOCATE 2,20 : INPUT " bis : ";schl
PRINT : INPUT " schrittweite : ";schr
schr=ABS(schr) : IF anf > schl THEN SWAP anf,schl
FOR rt = 1 TO 3 : CLS
IF rt=1 THEN PRINT " ";fu1$
IF rt=2 THEN PRINT " ";fu2$
IF rt=3 THEN PRINT " ";fu3$
za=2 : PRINT : FOR i = anf TO schl STEP schr
za=za+1 : IF za=10 THEN za=3 : GOSUB checkmouse
IF rt = 1 THEN y=FNfu1(i)
IF rt = 2 THEN y=FNfu2(i)
IF rt = 3 THEN y=FNfu3(i)
j=i/5.30795e-315 : LOCATE za,3 : PRINT USING " #####.#####";i
LOCATE za,20 : PRINT USING " #####.#####";y
LOCATE za,37 : PRINT USING "####.##";j;: PRINT " * phi";
NEXT i : LOCATE 1,42 : PRINT "<< ok >>": GOSUB checkmouse
NEXT rt : WINDOW CLOSE 3 : GOTO verzweigung
steigung: WINDOW 3,"steigungswerte",(150,45)-(475,85),0 : WIDTH "scrn:",65
INPUT " welche x-stelle : ";xst# : PRINT : xst1#=xst#-0.0001 : xst#=xst#+0.0001
y1# = FNfu1(xst1#) : y2# = FNfu1(xst#) : ste# = (y2#-y1#)/(xst#-xst1#)
PRINT " fuer funktion 1 : ";:PRINT USING " #####.###";ste#;
PRINT USING " ##.##";steg;:PRINT "°"
y1# = FNfu2(xst1#) : y2# = FNfu2(xst#) : ste# = (y2#-y1#)/(xst#-xst1#)
PRINT " fuer funktion 2 : ";:PRINT USING " #####.###";ste#;
PRINT USING " ##.##";steg;:PRINT "°"
y1# = FNfu3(xst1#) : y2# = FNfu3(xst#) : ste# = (y2#-y1#)/(xst#-xst1#)
PRINT " fuer funktion 3 : ";:PRINT USING " #####.###";ste#;
PRINT USING " ##.##";steg;:PRINT "°";
LOCATE 1,34 : PRINT "< ok >" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
flaechen: WINDOW 3,"flaechenberechnung",(180,45)-(450,85),0 : WIDTH "scrn:",65
PRINT " fuer welche funktion ?" : PRINT
PRINT " funktion 1 < o >"
PRINT " funktion 2 < o >"
PRINT " funktion 3 < o >";
flaewa: GOSUB checkmouse : flfu=0 : IF x<182 OR x>212 THEN flaewa
IF y>16 AND y<22 THEN flfu=1
IF y>24 AND y<30 THEN flfu=2
IF y>32 AND y<38 THEN flfu=3
IF flfu<1 THEN flaewa
CLS : PRINT " gilt nur fuer y";flfu
INPUT " von x1 : ";a12# : INPUT " bis x2 : ";a13#
a10#=0 : IF a12# > a13# THEN SWAP a12#,a13#
a11#=(a13#-a12#)/500 : x1#=a12# : FOR i% = 1 TO 500 : x#=x1#
IF flfu=1 THEN y#=FNfu1(x#)
IF flfu=2 THEN y#=FNfu2(x#)
IF flfu=3 THEN y#=FNfu3(x#)
y1#=y# : x2#=x1#+a11# : x#=x2#
IF flfu=1 THEN y#=FNfu1(x#)
IF flfu=2 THEN y#=FNfu2(x#)
IF flfu=3 THEN y#=FNfu3(x#)
a10#=a10#+a11#*y1#+a11#*(y#-y1#)/2 : x1#=a12#+i%*a11# : NEXT
PRINT : PRINT " flaeche : "; : PRINT USING " #####.#####";a10#; : PRINT" E²";
LOCATE 1,28 : PRINT "< ok >" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
nullstellen: WINDOW 3,"nullstellen",(150,45)-(475,142),0 : WIDTH "scrn:",65
PRINT : PRINT " fuer funktion ? < 1 > < 2 > < 3 >" : fu=0
nullchm1: GOSUB checkmouse : IF y<8 OR y>14 THEN nullchm1
IF x>157 AND x<187 THEN fu=1
IF x>222 AND x<252 THEN fu=2
IF x>286 AND x<316 THEN fu=3
IF fu<1 THEN nullchm1
PRINT : PRINT " die berechnung erfolgt im dargestellten"
PRINT : PRINT " bereich - wenn noch nicht bestimmt"
PRINT : PRINT " von - 10 bis 10" : a10=b : a12=a : a13=b : PRINT
nulla1: a11=(a13-a12)/40 : a15=a12 : FOR i% = 1 TO 40 : a14=a15+a11 : x=a15
IF fu=1 THEN y=FNfu1(x) : y1=y : x=a14 : y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x) : y1=y : x=a14 : y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x) : y1=y : x=a14 : y=FNfu3(x)
IF y1<0 AND y>0 THEN a12=a15 : a13=a14 : GOTO nulla1
IF y1>0 AND y<0 THEN a12=a15 : a13=a14 : GOTO nulla1
IF y1=0 THEN v=a15 : GOTO nullaus
IF y =0 THEN v=a14 : GOTO nullaus
a15=a14 : NEXT i% : v=a15
IF a10-0.01 < a14 THEN PRINT : PRINT " durchgerechnet <«»>" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
nullaus: PRINT " bei x = ";: PRINT USING " #####.#####";v;: PRINT USING " = ###.## * phi";(v/3.1415)
a13=a10 : a12=v+0.01 : GOTO nulla1
grundform: CLS : LOCATE 2,7 : PRINT "<< GRUNDFORMELN ZUR DIFFERENTIATION ALGEBRAISCHER FUNKTIONEN >>" : WIDTH "scrn:",80
LOCATE 5,3 : PRINT "potenzregel: y = x^n y' = n*x^(n-1)"
PRINT : PRINT " konstantenregel: y = a*x^n y' = a*n*x^(n-1)"
PRINT " y = a y' = 0"
PRINT : PRINT " summenregel: y = f1(x) ± f2(x)... y' = f1'(x) ± f2'(x)..."
PRINT : PRINT " quotientenregel: y = u(x) / v(x) y' = (u'*v - v'*u) / v^2"
PRINT : PRINT " kettenregel: y = f(z) = f[g(x)] y' = f'(z) * g'(x)"
PRINT : PRINT " produktenregel: y = u(x) * v(x) y' = u' * v + v' * u"
LOCATE 17,46 : PRINT "y' = u * v * ( u'/u + v'/v )"
LOCATE 19,22 : PRINT "y = u * v *w y' = u'*v*w + u*v'*w + u*v*w'"
LOCATE 21,22 : PRINT "oder y' = u*v*w * ( u'/u + v'/v + w'/w )"
LOCATE 24,46 : PRINT "weiter < > menue < >";
grchm: GOSUB checkmouse : IF y<184 OR y>190 THEN grchm
IF x>422 AND x<436 THEN grundf2
IF x>590 AND x<604 THEN tafel
GOTO grchm
grundf2: CLS : LOCATE 2,7 : PRINT "<< GRUNDFORMELN ZUR DIFFERENTIATION TRANSZENDENTER FUNKTIONEN >>"
LOCATE 6,3 : PRINT "EXPONENTIALFUNKTIONEN:"
PRINT : PRINT " y = b^x y' = b^x * ln(b)"
PRINT " y = b^(a*x) y' = a * b^(a*x) * ln(b)"
PRINT " y = e^x y' = e^x"
PRINT " y = e^(a*x) y' = a * e^(a*x)"
PRINT " y = e^x * x^n y' = e^x * x^(n-1) * (n+x)"
PRINT " y = x^x y' = x^x * [ 1+ln(x) ]"
PRINT : PRINT " LOGARITHMISCHE FUNKTIONEN:" : PRINT
PRINT " y = log{b}(x) y' = 1 / [ x*ln(b) ]"
PRINT " y = log{b}(a*x) y' = 1 / [ x*ln(b) ]"
PRINT " y = ln(x) y' = 1/x"
PRINT " y = ln(a*x) y' = 1 / (a*x)"
PRINT " y = ln [(1+x)/(1-x)] y' = 2 / (1-x^2)"
LOCATE 24,46 : PRINT "weiter < > menue < >";
grchm2: GOSUB checkmouse : IF y<184 OR y>190 THEN grchm2
IF x>422 AND x<436 THEN grundf3
IF x>590 AND x<604 THEN tafel
GOTO grchm2
grundf3: CLS : LOCATE 1,2 : PRINT"TRIGONOMETRISCHE FUNKTIONEN :"
LOCATE 3,3 : PRINT "y = sin(x) y' = cos(x)"
PRINT " y = cos(x) y' = - sin(x)"
PRINT " y = tan(x) y' = 1 / cos^2(x)"
LOCATE 6,26 : PRINT "y' = 1 + tan^2(x)"
PRINT " y = cot(x) y' = - 1 / sin^2(x)"
LOCATE 8,26 : PRINT "y' = - 1 - cot^2(x)"
PRINT " y = sec(x) y' = sin(x) / cos^2(x)"
LOCATE 10,26 : PRINT "y' = tan(x) * sec(x)"
PRINT " y = cosec(x) y' = - cos(x) / sin^2(x)"
LOCATE 12,26 : PRINT "y' = - cot(x) * cosec(x)"
PRINT " y = a * sin(b*x) y' = a * b * cos(b*x)"
PRINT " y = a * cos(b*x) y' = - a * b * sin(b*x)"
PRINT " y = a * tan(b*x) y' = (a*b) / cos^2(b*x)"
LOCATE 16,26 : PRINT "y' = a * b * [ 1 + tan^2(b*x) ]"
PRINT " y = a * cot(b*x) y' = - (a*b) / sin^2(b*x)"
LOCATE 18,26 : PRINT "y' = - a * b * [ 1 + cot^2(b*x) ]"
PRINT " y = sin^n(x) y' = n * sin^(n-1)(x) * cos(x)"
PRINT " y = cos^n(x) y' = - n * cos^(n-1)(x) * sin(x)"
PRINT " y = tan^n(x) y' = n * tan^(n-1)(x) * [ 1 + tan^2(x) ]"
PRINT " y = cot^n(x) y' = - n * cot^(n-1)(x) * [ 1 + cot^2(x) ]"
PRINT " y = x * sin(x) y' = x * cos(x) + sin(x)"
LOCATE 24,46 : PRINT "weiter < > menue < >";
grchm3: GOSUB checkmouse : IF y<184 OR y>190 THEN grchm3
IF x>422 AND x<436 THEN grundf4
IF x>590 AND x<604 THEN tafel
GOTO grchm3
grundf4: CLS : LOCATE 2,3 : PRINT "ZYKLOMETRISCHE FUNKTIONEN:" : PRINT
PRINT " y = arc sin(x) y' = 1 / sqr(1-x^2) ;fuer -1 <= x <= 1"
PRINT " y = arc cos(x) y' = - 1 / sqr(1-x^2) ;fuer -1 <= x <= 1"
PRINT " y = arc tan(x) y' = 1 / ( 1 + x^2 )"
PRINT " y = arc cot(x) y' = - 1 / ( 1 + x^2 )"
PRINT : PRINT " HYPERBELFUNKTIONEN:" : PRINT
PRINT " y = sinh(x) y' = cosh(x)"
PRINT " y = cosh(x) y' = sinh(x)"
PRINT " y = tanh(x) y' = 1 - tanh^2(x) oder y' = 1 / cosh^2(x)"
PRINT " y = coth(x) y' = 1 - coth^2(x) oder y' = - 1 / sinh^2(x)"
PRINT : PRINT " AREAFUNKTIONEN:" : PRINT
PRINT " y = ar sinh(x) y' = 1 / sqr(x^2+1)"
PRINT " y = ar cosh(x) y' = 1 / sqr(x^2-1) ;fuer x >= 1"
PRINT " y = ar tanh(x) y' = 1 / ( 1 - x^2 ) ;fuer -1 <= x <= 1"
PRINT " y = ar coth(x) y' = 1 / ( 1 - x^2 ) ;fuer -1 >= x >= 1"
LOCATE 24,68 : PRINT "menue < >";
grchm4: GOSUB checkmouse : GOTO tafel
minmax: WINDOW 3,"min-max",(150,45)-(475,142),0 : WIDTH "scrn:",65
PRINT : PRINT " fuer funktion ? < 1 > < 2 > < 3 >" : fu=0
mmchm: GOSUB checkmouse : IF y<8 OR y>14 THEN mmchm
IF x>157 AND x<187 THEN fu=1
IF x>222 AND x<252 THEN fu=2
IF x>286 AND x<316 THEN fu=3
IF fu<1 THEN mmchm
PRINT : PRINT " die berechnung erfolgt im dargestellten"
PRINT : PRINT " bereich : ";a;" bis ";b
PRINT : a10=a : a11=b
a13=a11 : a12=(a11-a10)/61 : x=a10
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
y1=y : x=a10+a12
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
IF y<y1 THEN mm4
mm1: a12=(a11-a10)/61 : FOR i% = 1 TO 61 : x1=a10 : x2=x1+a12 : x3=x2+a12 : x=x1
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
y1=y : x=x2
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
y2=y : x=x3
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
IF y2=y1 AND y1=y THEN mm2
IF y2>=y1 AND y2>y THEN a10=x1 : a11=x3 : GOTO mm1
a10=x2 : NEXT i% : a11=a13 : GOTO mm3
mm2: IF x2<0.001 AND x2>-0.001 THEN x=0 : :ELSE mm21
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
y4=y : IF y4=y2 THEN x2=0
mm21: PRINT USING " max bei x,y : ####.##";x2;: PRINT USING " , ####.##";y2
a11=a13 : a10=x2
mm3: IF a13-0.01<x2 THEN PRINT : PRINT " durchgerechnet <«»>" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
mm4: a12=(a11-a10)/61 : FOR i% = 1 TO 61 : x1=a10 : x2=x1+a12 : x3=x2+a12 : x=x1
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
y1=y : x=x2
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
y2=y : x=x3
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
IF y2=y1 AND y1=y THEN mm5
IF y2<=y1 AND y2<y THEN a10=x1 : a11=x3 : GOTO mm4
a10=x2 : NEXT i% : a11=a13 : GOTO mm6
mm5: IF x2<0.001 AND x2>-0.001 THEN x=0 :ELSE mm51
IF fu=1 THEN y=FNfu1(x)
IF fu=2 THEN y=FNfu2(x)
IF fu=3 THEN y=FNfu3(x)
y4=y : IF y4=y2 THEN x2=0
mm51: PRINT USING " min bei x,y : ####.##";x2;: PRINT USING " , ####.##";y2
a11=a13 : a10=x2
mm6: IF a13-0.01<x2 THEN PRINT : PRINT " durchgerechnet <«»>" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
a10=x2 : a11=a13 : GOTO mm1
schnittpu: WINDOW 3,"schnittpunkte",(150,45)-(475,142),0 : WIDTH "scrn:",65
PRINT : PRINT " die berechnung erfolgt im dargestellten"
PRINT : PRINT " bereich : ";a;" bis ";b : PRINT
FOR j% = 1 TO 3 : a12=a : a13=b
schnitt1: a11=(a13-a12)/40 : FOR x = a12 TO a13 STEP a11
IF j%=1 THEN y1#=FNfu1(x) : y2#=FNfu2(x) : y3#=FNfu1(x+a11) : y4#=FNfu2(x+a11)
IF j%=2 THEN y1#=FNfu2(x) : y2#=FNfu3(x) : y3#=FNfu2(x+a11) : y4#=FNfu3(x+a11)
IF j%=3 THEN y1#=FNfu1(x) : y2#=FNfu3(x) : y3#=FNfu1(x+a11) : y4#=FNfu3(x+a11)
IF y1#-y2#<1e-06 AND y1#-y2#>-1e-06 THEN v=x : yy=y1# : GOTO schnittaus
IF y1#<y2# AND y3#>y4# THEN a12=x : a13=x+a11 : GOTO schnitt1
IF y1#>y2# AND y3#<y4# THEN a12=x : a13=x+a11 : GOTO schnitt1
NEXT x : v=x
NEXT j% : PRINT : PRINT " durchgerechnet <«»>" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
schnittaus: IF j% = 1 THEN PRINT " y1-y2 bei x,y : ";
IF j% = 2 THEN PRINT " y2-y3 bei x,y : ";
IF j% = 3 THEN PRINT " y1-y3 bei x,y : ";
PRINT USING " ####.###";v;: PRINT USING " ####.###";yy
a12=x+(b-a)/200 : a13=b : GOTO schnitt1